From: Álvaro Fernández Rojas Date: Fri, 14 Nov 2025 07:50:24 +0000 (+0100) Subject: github: ci: add tests X-Git-Url: http://git.openwrt.org/%22https:/collectd.org//%22http:/www.crowdsec.net/%22/%22https:/collectd.org/%22http:/www.crowdsec.net/%22?a=commitdiff_plain;h=c4d7aff97bbe3af36af969564a02bf928932c4f8;p=project%2Fubus.git github: ci: add tests Build ubus with UNIT_TESTING and execute tests. Signed-off-by: Álvaro Fernández Rojas --- diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3c7600d..ce72df2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -153,3 +153,80 @@ jobs: echo "| :---: | :---: | :---: | :---: | :---: |" >> $GITHUB_STEP_SUMMARY echo "| basic | ${size_aarch64_basic} | ${size_arm_basic} | ${size_mips_basic} | ${size_x86_64_basic} |" >> $GITHUB_STEP_SUMMARY echo "| full | ${size_aarch64_full} | ${size_arm_full} | ${size_mips_full} | ${size_x86_64_full} |" >> $GITHUB_STEP_SUMMARY + + tests: + name: Tests + runs-on: ubuntu-latest + steps: + - name: Checkout ubus + uses: actions/checkout@v5 + + - name: Checkout json-c + uses: actions/checkout@v5 + with: + repository: json-c/json-c + path: depends/json-c + + - name: Checkout libubox + uses: actions/checkout@v5 + with: + repository: openwrt/libubox + path: depends/libubox + + - name: Install dependencies + run: | + sudo apt update + sudo apt install valgrind + + - name: Prepare build + run: | + mkdir -p ${GITHUB_WORKSPACE}/build + mkdir -p ${GITHUB_WORKSPACE}/depends/lua + echo "${GITHUB_WORKSPACE}/build/bin" >> $GITHUB_PATH + + - name: Build json-c + working-directory: depends/json-c + run: | + cmake \ + -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \ + -DBUILD_SHARED_LIBS=OFF \ + -DDISABLE_EXTRA_LIBS=ON \ + -DBUILD_TESTING=OFF \ + --install-prefix ${GITHUB_WORKSPACE}/build + make + make install + + - name: Build lua + working-directory: depends/lua + run: | + wget -qO- https://www.lua.org/ftp/lua-${{ env.LUA_VERSION }}.tar.gz | \ + tar zxvf - --strip-components=1 + sed -i '/#define LUA_USE_READLINE/d' src/luaconf.h + sed -i 's/ -lreadline -lhistory -lncurses//g' src/Makefile + make linux install \ + INSTALL_TOP=${GITHUB_WORKSPACE}/build + + - name: Build libubox + working-directory: depends/libubox + run: | + cmake \ + -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \ + -DBUILD_LUA=ON \ + -DBUILD_EXAMPLES=OFF \ + -DLUAPATH=${GITHUB_WORKSPACE}/build/lib/lua \ + --install-prefix ${GITHUB_WORKSPACE}/build + make + make install + + - name: Build ubus + run: | + cmake \ + -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \ + -DBUILD_LUA=ON \ + -DUNIT_TESTING=ON \ + -DLUAPATH=${GITHUB_WORKSPACE}/build/lib/lua + make + + - name: Test ubus + run: | + make test CTEST_OUTPUT_ON_FAILURE=1 diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 5549a40..f0900e9 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,14 +1,16 @@ ADD_SUBDIRECTORY(cram) +FIND_LIBRARY(json_script_library NAMES json_script) + MACRO(ADD_UNIT_TEST name) ADD_EXECUTABLE(${name} ${name}.c) - TARGET_LINK_LIBRARIES(${name} ubox blobmsg_json json_script ${json}) + TARGET_LINK_LIBRARIES(${name} ${ubox_library} ${blob_library} ${json_script_library} ${json}) TARGET_INCLUDE_DIRECTORIES(${name} PRIVATE ${PROJECT_SOURCE_DIR}) ENDMACRO(ADD_UNIT_TEST) MACRO(ADD_UNIT_TEST_CPP name) ADD_EXECUTABLE(${name} ${name}.cpp) - TARGET_LINK_LIBRARIES(${name} ubox blobmsg_json json_script ${json}) + TARGET_LINK_LIBRARIES(${name} ${ubox_library} ${blob_library} ${json_script_library} ${json}) TARGET_INCLUDE_DIRECTORIES(${name} PRIVATE ${PROJECT_SOURCE_DIR}) ENDMACRO(ADD_UNIT_TEST_CPP)